#include "stm32f10x.h"
#include "usart.h"
#include "stdio.h"


void USART_init(uint32_t bound)
{
    GPIO_InitTypeDef GPIO_InitStrue; // 定义GPIO结构体变量
    USART_InitTypeDef USART_InitStrue; // 定义串口结构体变量
	


    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE); // 使能GPIOC的时钟

		GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9; // 配置TX引脚
    GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP; // 配置PA9为复用推挽输出
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz; // 配置PA9速率
    GPIO_Init(GPIOA,&GPIO_InitStrue); // GPIO初始化函数
	
		GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10; // 配置RX引脚
	  GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING; // 配置PA10为浮空输入
    GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz; //配置PA10速率
    GPIO_Init(GPIOA,&GPIO_InitStrue); //GOIP初始化函数

		USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; // 发送接收模式
	  USART_InitStrue.USART_Parity=USART_Parity_No; // 无奇偶校验
    USART_InitStrue.USART_BaudRate=bound; // 波特率
	  USART_InitStrue.USART_StopBits=USART_StopBits_1; // 停止位1位
		USART_InitStrue.USART_WordLength=USART_WordLength_8b; // 字长1位
    USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None; // 无硬件数据流控制
    USART_Init(USART1,&USART_InitStrue); // 串口初始化函数

    USART_Cmd(USART1,ENABLE); // 使能USART1

}


int fputc(int ch,FILE *f) // 重定向printf函数 
{
	USART_SendData(USART1,(uint8_t)ch); // 发送1字节
	while(USART_GetFlagStatus(USART1,USART_FLAG_TXE) == RESET); //等待发送完成
	return ch;
}





